let a: number;
//a的类型设置为number，以后使用过程中a只能作为number
a=10;
let b:string;
b='hello';
//变量的声明和赋值同时进行，TS可以自动对变量进行类型检查
let c=false;
c=true;

//JS中的函数不考虑参数的类型和个数
//function sum(a,b) {
//    return a+b;
//}
//console.log(sum(123,"456"));


function sum(a:number,b:number):number {
    return a+b;
}
let result=sum(123,456);


//字面量类型类似Java常量，赋值一次后不可修改

//可以使用|来连接多个类型（联合类型）
let f : "male"|"female";
f="male";
f="female";

//变量类型设置为any相当于关闭了TS的类型检测，声明变量不赋值TS自动判断其为any类型
//any类型可以赋值给任意变量

//unknow是一个类型安全的any,不能直接赋值给其他变量

let s:string;
let e:unknown;
//类型断言可用来告诉解析器变量的实际类型
/**
 * 语法如下面两种
 */
s=e as string;
s=<string>e;

//never--没有返回值,void--返回为空，二者用来设置函数返回值类型
